Database systems, methods and computer program products are widely used for information management. More specifically, database systems, methods and computer program products may be used to reliably manage a large amount of data in a single-user or a multi-user environment. Database systems, methods and computer program products generally include a database that actually stores the data, a database management system and one or more applications that interface with the database management system to provide, for example, user interfaces and other applications.
As is well known to those having skill in the art, relational databases may be provided that are based on a table-column concept, set theoretic relations and/or relational algebra. One widely-available relational database is the Oracle8i relational database system that is marketed by Oracle Corporation. Other database systems may not be based on the above-mentioned attributes, so that they are not relational databases. For example, Indexed Sequential Access Method (C-ISAM) is a database that is marketed by Informix Software, Inc., that is not a relational database. See, for example, the Informix C-ISAM DataBlade Module User's Guide, Version 1.0, December 1999, Part No. 000-6498. Both relational and non-relational databases may be used to manage a large amount of data.
As is well known to those having skill in the art, databases generally facilitate database queries by building an index file in addition to storing the data in a data file. For very large databases, it may be desirable to manage creation of the index file and the data file, to handle large volumes of data.
One application of very large database systems is to store and manage temporal data, i.e., data that is collected over time. Temporal data also may be referred to as “historical” data that describes the business transactions of an enterprise over intervals of time. For example, in Internet-related applications, a mechanism, referred to as “flow”, may be used to establish connection-oriented end-to-end Internet service that behaves as if the two ends are physically connected. More specifically, in Asynchronous Transfer Mode (ATM) technology, flow can be in the form of a Virtual Circuit (VC). Flow also can be in the form of Private Virtual Path (PVP). Flow data may be used to monitor quality of service (QoS) on network service providers, backbone or otherwise. Flow data may be collected over a series of time intervals, the duration of which may be set based upon service provider and/or customer desires.
Thus, for example, in a service management system, such as a quality of service monitoring system, network quality service performance data may be collected by multiple collection servers across multiple domains, such as across several Internet service providers. Each collection server may include many collection clients, that directly connect quality of service data from network elements, such as routers, switches and bridges.
Since quality of service performance data and/or other temporal data may be collected over a series of time intervals, the data may be received as temporally spaced apart bursts of data records. For example, FIG. 1 graphically illustrates data arrival rate versus time for data records, such as flow data. As shown in FIG. 1, large amounts of data are received during a burst of time and no or relatively small amounts of data are received between the bursts of time. The bursts are shown in FIG. 1 to be equally spaced apart. However, in other scenarios, the bursts need not be equally spaced apart, and also need not be of equal burst length. As also shown in FIG. 1, the same amount of data need not be received during each burst.
Unfortunately, it may be difficult for databases to efficiently store temporally spaced apart bursts of data records. Moreover, these difficulties may be exacerbated when the number of bursts, the number of data records per burst and/or the number of sources of the bursts of data records become large.
Service management systems generally operate in a multiple client environment, to accommodate desired network service monitoring. Thus, service management systems may need to be able to handle large numbers of threads through which each of the multiple clients transmits large numbers of spaced apart bursts of data records. A service management system may allocate a dedicated thread per client. The service management system generally maintains its data in a database repository using a conventional relational and/or non-relational database management system to store the data. The data may arrive at the database in very large quantities. Moreover, multiple service requests may be sent from multiple collection servers simultaneously in real time, where each collection server sends high volumes of data in bursts at spaced apart times, as was shown in FIG. 1. In order to provide desired network monitoring performance and/or throughput, it therefore may be desirable to allow the database to handle multiple threads with high efficiency.
It is known to provide concurrency control for databases, by serializing read/write requests to reduce or prevent database collisions. However, database collisions may not be a primary consideration in the service management arena, because the quality of service performance data may only be written into the database by the collection servers, and the collection servers may not submit queries to the database. Also, since the quality of service performance data is historical in nature, it generally is not modified after being written into the database. Hence, there may not be read-write or write-write collisions Thus, database collisions and/or concurrency control may not be of prime concern. Rather, it may be desirable to provide an environment wherein high database storing throughput may be accommodated, to accommodate peak burst data from multiple clients.